home *** CD-ROM | disk | FTP | other *** search
/ BBS Toolkit / BBS Toolkit.iso / rbbs_pc / ugly174.zip / RSB2UGLY.MRG < prev    next >
Text File  |  1992-07-05  |  50KB  |  1,290 lines

  1. * ------------[ BLED merge (c) Ken Goosens ]-------------
  2. * Merge this against RELEASE\RBBSSUB2.BAS to produce RBBSSUB2.BAS
  3. * RELEASE\RBBSSUB2.BAS:  Date 6-20-1992  Size 140946 bytes
  4. * ------------[ Created 07-04-1992 19:43:21 ]------------
  5. * REPLACING old line(s) by new
  6. 109 '  $SUBTITLE: 'VarInit - subroutine to initialize system variables'
  7. '  $PAGE
  8. '
  9. '  NAME    --  VarInit
  10. '
  11. '  INPUTS  --  PARAMETER           MEANING
  12. '              NONE
  13. '
  14. '  OUTPUTS --  NONE
  15. '
  16. '  PURPOSE --  To initialize system variable
  17. '
  18.       SUB VarInit STATIC
  19.     DEF SEG                            ' Point to BASIC
  20.     WIDTH 80                           ' Set Screen Width
  21.     KEY OFF                            ' Line 25 turned off
  22. ' ********************* Variable Definitions *******************************
  23.     ZMsgDim = 99
  24.     WasMM = 999
  25.     WasBX = 75
  26.     WasJ = 60
  27.     REDIM ZOptSec(WasJ)
  28.     DIM ZWorkAra$(WasJ)
  29.     DIM ZGSRAra$(WasJ)
  30.     DIM ZCategoryName$(WasBX),ZCategoryCode$(WasBX),ZCategoryDesc$(WasBX)
  31.     DIM ZOutTxt$(ZMsgDim)                      ' Message line table
  32.     DIM ZUserIn$(ZMsgDim)                      ' Message line table
  33.     DIM ZMsgPtr(WasMM,2)                       ' Message pointers
  34.     ZAcknowledge$ = CHR$(6)
  35.     ZAckChar$ = "C" + _
  36.             ZAcknowledge$
  37.     ZActiveMenu$ = "B"
  38.     ZActiveMessage$ = CHR$(225)
  39.     ZBackSpace$ = CHR$(8) + _
  40.                  CHR$(32) + _
  41.                  CHR$(8)
  42.     ZBackArrow$ = CHR$(29) + _
  43.                   CHR$(32) + _
  44.                   CHR$(29)
  45.     ZBaudRates$ = "      300  450 1200 2400 4800 7200 96001200014400168001920038400"
  46.     ZBellRinger$ = CHR$(7)
  47.     ZBulletinMenu$ = ""
  48.     ZWasCL = 24
  49.     ZCancel$ = CHR$(24)
  50.     ZColorReset$ = CHR$(27) + _
  51.                    "[00;37;40m"
  52.     ZConfigFileName$ = "RBBS-PC.DEF"
  53.     ZCarriageReturn$ = CHR$(13)
  54.     ZDeletedMsg$ = CHR$(226)
  55.     ZEndTransmission$ = CHR$(4)
  56.     ZEscape$ = CHR$(27)
  57.     ZExpectActiveModem = 0
  58.     ZFalse = 0
  59.     ZF1Key = 59
  60.     ZF10Key = 68
  61.     ZConfName$ = "MAIN"
  62.     CALL SetHiLite (ZTrue)
  63.     ZHomeConf$ = ""
  64.     ZInConfMenu = -1
  65.     ZLastCommand$ = "M "
  66.     ZLimitMinsPerSession = 0
  67.     ZLineFeed$ = CHR$(10)
  68.     ZLineFeeds = NOT ZFalse
  69.     ZLineEditChk$ = CHR$(9) + _
  70.                     ZLineFeed$ + _
  71.                     CHR$(11) + _
  72.                     CHR$(12) + _
  73.                     CHR$(127) + _
  74.                     CHR$(8) + _
  75.                     ZBellRinger$ + _
  76.                     CHR$(26) + _
  77.                     CHR$(227)
  78.     ZLineMes$ = SPACE$(78)          ' fixed length string workspace
  79.     ZLockStatus$ = "UM UU UB UD"
  80.     ZMenuIndex = 2
  81.     ZNAK$ = CHR$(21)
  82.     ZNoAdvance = ZFalse
  83.     ZPageLength = 23
  84.     ZParseOff = ZFalse
  85. * ------[ first line different ]------
  86.     ZPressEnter$ = " (Press [ENTER] to Quit)"                        ' UG070501
  87.     ZPressEnterExpert$ = " ([ENTER] Quits)"                          ' UG070501
  88.     ZPressEnterNovice$ = ZPressEnter$
  89.     ZPrivateDoor = ZFalse
  90.     ZRightMargin = 72
  91.     ZReturnLineFeed$ = ZCarriageReturn$ + _
  92.                         ZLineFeed$
  93.     ZSmartTable$ = "CS PB NS FN LN SL DT TM TR TE TL RP RR CT " + _
  94.                    "C1 C2 C3 C4 C0 DD BD DB UB DL UL FI VY VN " + _
  95.                    "TY TN BN ND FS LS CN"
  96.     ZStartOfHeader$ = CHR$(1)
  97.     ZTimeLoggedOn$ = SPACE$(8)
  98.     ZTrue = NOT ZFalse
  99.     ZUpInc = -1
  100.     ZXOff$ = CHR$(19)
  101.     ZXOn$ = CHR$(17)
  102.     ZInterrupOn$ = CHR$(11) + ZCancel$ + ZXOff$ + ZXOn$ + ZCarriageReturn$
  103.     ZOptionEnd$ = ZReturnLineFeed$ + " ,("
  104.     ZCrLf$ = ZCarriageReturn$ + ZLineFeed$
  105.     ZVersionID$ = "17.4A/0704"
  106.     ZWasLG$(1) = "Registration Check Failed"
  107.     ZWasLG$(2) = "Sysop name attempted"
  108.     ZWasLG$(3) = "Locked out attempt"
  109.     ZWasLG$(4) = "Password Attempt Failed"
  110.     ZWasLG$(5) = "Auto Lockout done"
  111.     ZWasLG$(6) = "Name in use on another Node!"
  112.     ZWasLG$(7) = ""
  113.     ZWasLG$(8) = "Locked reason read!"
  114.     ZWasLG$(9) = "Expired Registration"
  115.     CALL GetCommand (ZDebug,ZNetTime$,ZNetBaud$,ZNetReliable$)
  116.     ZSubParm = 1
  117.     CALL ReadDef (ZConfigFileName$)
  118.     REDIM ZWorkAra$(ZMaxWorkVar)
  119.     REDIM ZGSRAra$(ZMaxWorkVar)
  120.     ZUseTPut = (ZUpperCase OR ZXOnXOff)
  121.     ZOrigCallers$ = ZCallersFile$
  122.     ZOrigMsgFile$ = ZMainMsgFile$
  123.     ZOrigUserFile$ = ZMainUserFile$
  124.     ZOrigSysopFN$ = ZSysopFirstName$
  125.     ZOrigSysopLN$ = ZSysopLastName$
  126.     ZPromptBell = ZPromptBellDef
  127.     ZSecretName$ = ZSysopPswd1$ + " " + ZSysopPswd2$
  128.     END SUB
  129. '
  130. * REPLACING old line(s) by new
  131. * ------[ first line different ]------
  132. 675 ZOutTxt$ = "Enter a Password"                                    ' UG070501
  133.     ZHidden = ZTrue
  134.     CALL PopCmdStack
  135.     IF ZSubParm < 0 THEN _
  136.        ZPswdFailed = ZTrue : _
  137.        EXIT SUB
  138.     ZHidden = ZFalse
  139.     ZWasZ$ = ZUserIn$
  140. * REPLACING old line(s) by new
  141. * ------[ first line different ]------
  142. 680 CALL QuickTPut1 ("Sorry, Wrong Password.")                       ' UG070501
  143.     ZLastIndex = 0
  144.     IF NOT ZMsgPswd THEN _
  145.        CALL UpdtCalr (ZActiveUserName$+" PW fail: " + ZWasZ$,1)
  146.     GOTO 670
  147.     END SUB
  148. * REPLACING old line(s) by new
  149. 1331 IF SotMenu THEN _
  150.         ZFileName$ = HelpMenu$ : _
  151.         GOSUB 1350 : _
  152.         SotMenu = ZFalse
  153.      ZAnsIndex = 1
  154. * ------[ first line different ]------
  155.      ZOutTxt$ = "Display Help for What (HELP for Menu)" + _          ' UG070501
  156.           ZPressEnterExpert$
  157.      ZSubParm = 1
  158.      CALL UglyTGet                                                   ' UG070501
  159.      IF ZSubParm = -1 THEN _
  160.         EXIT SUB
  161.      IF ZWasQ = 0 THEN _
  162.         EXIT SUB
  163.      ZLastIndex = ZWasQ
  164. * REPLACING old line(s) by new
  165. 1336 IF NOT ZOK THEN _
  166. * ------[ first line different ]------
  167.         ZOutTxt$ = "Sorry, No Help Found for " + _
  168.              ZWasZ$ + "." : _                                        ' UG070501
  169.         CALL QuickTPut2 (ZOutTxt$) : _                               ' UG070501
  170.         CALL UpdtCalr (ZOutTxt$,2)
  171.      ZAnsIndex = ZAnsIndex + 1
  172.      IF ZAnsIndex <= ZLastIndex THEN _
  173.         GOTO 1332
  174.      IF FastHelp THEN _
  175.         FastHelp = ZFalse : _
  176.         EXIT SUB
  177.      GOTO 1331
  178. * REPLACING old line(s) by new
  179. 1350 CALL Graphic (ZFileName$)
  180. * ------[ first line different ]------
  181.      IF NOT ZOK THEN _                                               ' UG070501
  182.         RETURN                                                       ' UG070501
  183.      CALL BufFile (ZFileName$,WasX)
  184.      RETURN
  185.      END SUB
  186. * REPLACING old line(s) by new
  187. 1380 ' $SUBTITLE: 'VIOLATION - handles all security violations'
  188. ' $PAGE
  189. '
  190. '  NAME    -- SecViolation
  191. '
  192. '  INPUTS  --     PARAMETER                    MEANING
  193. '
  194. '  OUTPUTS -- ZCursorLine               CURRENT LINE ON SCREEN
  195. '             ZCursorRow                CURRENT ROW ON ZCursorLine
  196. '
  197. '  PURPOSE -- Inform caller of security violation, augment count of
  198. '             violations and determine whether too many occurred.
  199. '
  200.      SUB SecViolation STATIC
  201.      CALL FlushKeys
  202.      CALL BufFile (ZSecVioHelp$,WasX)
  203.      IF NOT ZOK THEN _
  204. * ------[ first line different ]------
  205.         CALL QuickTPut2 ("Sorry, a Higher Security Level is Required.") ' UG070501
  206.      CALL UpdtCalr ("SV!-" + ZViolation$,2)
  207.      ZLastIndex = 0
  208.      CALL Muzak (3)
  209.      ZViolationsThisSession = ZViolationsThisSession + 1
  210.      IF ZMaxViolations = 0 OR ZViolationsThisSession <= ZMaxViolations THEN _
  211.         EXIT SUB
  212. * REPLACING old line(s) by new
  213. 1385 IF ZUserFileIndex < 1 THEN _
  214.         EXIT SUB
  215. * ------[ first line different ]------
  216.      ZOutTxt$ = "Security Violation!  SysOp Can Reinstate You."      ' UG070501
  217.      IF ZUserSecLevel <= ZMinLogonSec THEN _
  218.         ZOutTxt$ = "" : _
  219.         ZUserSecLevel = ZUserSecLevel - 1 _
  220.      ELSE ZUserSecLevel = ZMinLogonSec
  221.      ZDenyAccess = ZTrue
  222.      END SUB
  223. * REPLACING old line(s) by new
  224. 1450 IF ZCR <> 1 THEN _
  225. * ------[ first line different ]------
  226.         CALL SkipLine (1)                                            ' UG070501
  227.      IF ZCR > 1 THEN _                                               ' UG070501
  228.         CALL SkipLine (1)                                            ' UG070501
  229. * REPLACING old line(s) by new
  230. * ------[ first line different ]------
  231. 1476 IF ASC(ZWasY$) < 127 THEN                                       ' UG070509
  232.         ZCommPortStack$ = ZCommPortStack$ + ZWasY$
  233.         IF ZTurboKey OR (NOT ZTurboKey AND ZWasY$ = ZCarriageReturn$) THEN ' UG070509
  234.            ZRet = ZTrue                                              ' UG070509
  235.         END IF                                                       ' UG070509
  236.      END IF                                                          ' UG070509
  237.      RETURN
  238.      END SUB
  239. * REPLACING old line(s) by new
  240. 1478 ' $SUBTITLE: 'QuickTPut - subroutine to quickly write to terminal'
  241. ' $PAGE
  242. '
  243. '  NAME    -- QuickTPut
  244. '
  245. '  INPUTS  -- PARAMETER             MEANING
  246. '             Strng$             STRING TO WRITE OUT
  247. '             NumReturns         NUMBER OF CARRIAGE RETURNS
  248. '
  249. '  OUTPUTS -- NONE
  250. '
  251. '  PURPOSE -- Subroutine to quickly write to the terminal.  This is
  252. '             different from "TPut" in the things it doesn't do:
  253. '                A.) No function key check,
  254. '                B.) No conversion to upper case,
  255. '                C.) No check for carrier present
  256. '                D.) No check for imbedded carriage return in "Strng$"
  257. '                E.) No support for XON/XOff
  258. '
  259.       SUB QuickTPut (Strng$,NumReturns) STATIC
  260.       IF ZSubParm < 0 THEN _
  261.          EXIT SUB
  262.       IF ZUseTPut THEN _
  263.          ZOutTxt$ = Strng$ : _
  264.          ZSubParm = 4 : _
  265.          CALL TPut : _
  266.          CALL SkipLine (NumReturns) : _
  267.          EXIT SUB
  268.       CALL PutCom (Strng$)
  269.       LOCATE ,,1
  270.       CALL LPrnt (Strng$,0)
  271.       CALL SkipLine (NumReturns)
  272.       END SUB
  273.       SUB QuickTPut1 (Strng$) STATIC
  274.       CALL QuickTPut (Strng$,1)
  275.       END SUB
  276. * ------[ first line different ]------
  277.       SUB QuickTPut2 (Strng$) STATIC                                 ' UG070501
  278.       CALL QuickTPut (Strng$,2)                                      ' UG070501
  279.       END SUB                                                        ' UG070501
  280. * REPLACING old line(s) by new
  281. 1500 CALL Carrier
  282.      IF ZSubParm = -1 THEN _
  283.         EXIT SUB
  284.      ZLinesPrinted = 0
  285.      ZDisplayAsUnit = ZFalse
  286.      InStack = ZFalse
  287.      GOSUB 1580
  288.      ZWasA = 0
  289.      ZWasB = 0
  290.      ZWasC = 0
  291.      ZWasQ = 1
  292.      ZStoreParseAt = 1
  293.      ZYes = ZFalse
  294.      ZUserIn$ = ""
  295.      SleepWarn = ZTrue
  296.      ZNo = ZFalse
  297.      ZNonStop = (ZPageLength < 1)
  298.      IF ZOutTxt$ = "" THEN _
  299.         GOTO 1525
  300. * ------[ first line different ]------
  301.      IsMore = (LEFT$(ZOutTxt$,4) = "More") OR (LEFT$(ZOutTxt$,6) = "Press ") ' UG070510
  302.      IF ZHidden THEN _
  303.         ZOutTxt$ = ZOutTxt$ + " (dots will echo)"                    ' UG070501
  304.      IF (NOT ZVerifying) OR HoldA$ = "" THEN _
  305.         CALL ColorPrompt (ZOutTxt$) : _
  306.         ZOutTxt$ = ZOutTxt$ + _
  307.              MID$("? :  ",2*ZTurboKey+1,2) : _                       ' UG070501
  308.         HoldA$ = ZOutTxt$ _
  309.      ELSE ZOutTxt$ = HoldA$
  310.      ZSubParm = 4
  311.      StopSave = ZStopInterrupts
  312.      ZStopInterrupts = ZTrue
  313.      CALL TPut
  314.      ZStopInterrupts = StopSave
  315.      IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
  316.         EXIT SUB
  317. * REPLACING old line(s) by new
  318. 1537 CALL CheckTime(ZAutoLogoff!, TempElapsed!, 3)
  319.      IF TempElapsed! < 30 THEN _
  320.         IF TempElapsed! <= 0 THEN _
  321. * ------[ first line different ]------
  322.            CALL SkipLine (2) : _                                     ' UG070501
  323.            ZSubParm = -1 : _
  324.            ZNo = ZTrue : _
  325.            ZRet = ZTrue : _
  326.            ZSleepDisconnect = NOT ZAutoLogoffReq : _
  327.            IF ZAutoLogoffReq THEN _
  328.               CALL UpdtCalr ("Auto-logoff",1): _
  329.               EXIT SUB _
  330.            ELSE CALL UpdtCalr ("Sleep disconnect",1) : _
  331.                 EXIT SUB _
  332.         ELSE IF SleepWarn THEN _
  333.                 SleepWarn = ZFalse : _
  334.                 Temp! = TempElapsed! : _
  335.                 CALL SkipLine (1) : _                                ' UG070501
  336.                 ZOutTxt$ = "Logging You Off.  Press [ENTER] to Abort." : _ ' UG070501
  337.                 CALL RingCaller : _                                  ' UG070501
  338.                 CALL QuickTput ("Auto-Logoff in 30",0) _             ' UG070501
  339.              ELSE IF Temp! - TempElapsed! > 1.0 THEN _
  340.                      CALL QuickTPut (ZBackSpace$+ZBackSpace$,0) : _
  341.                      CALL QuickTPut (RIGHT$(STR$(CINT(TempElapsed!)),2),0) : _
  342.                      Temp! = TempElapsed!                            ' UG070501
  343.      CALL FindFKey
  344.      IF ZSubParm < 0 THEN _
  345.         EXIT SUB
  346. * REPLACING old line(s) by new
  347. 1545 WasX$ = ZWasY$
  348. * ------[ first line different ]------
  349.      IF ZFossil AND _                                                ' UG070510
  350.         NOT IsMore AND _                                             ' UG070510
  351.         (ZTurboKey OR (NOT ZTurboKey AND ZWasY$ = ZCarriageReturn$)) THEN ' UG070510
  352.         CALL FosTxPurge(ZComPort)                                    ' UG070510
  353.         CALL PutCom(ZEmphasizeOff$ + ZEmphasizeOff$)                 ' UG070510
  354.      END IF                                                          ' UG070510
  355.      ZAutoLogoffReq = ZFalse
  356.      IF INSTR(ZLineEditChk$,ZWasY$) > 5 _
  357.         GOTO 1635
  358.      IF ZWasY$ < " " AND ZWasY$ <> ZCarriageReturn$ THEN _
  359.         GOTO 1525
  360.      IF ZWasY$ = "^" THEN _
  361.         GOTO 1525
  362.      IF ZWasY$ = ZCarriageReturn$ THEN _
  363.         GOTO 1547 _
  364.      ELSE GOSUB 1550
  365.      IF ZTurboKey < 1 THEN _
  366.         GOTO 1546
  367.      IF ZWasY$ = " " THEN _
  368.         ZWasY$ = ""
  369.      IF ZWasY$ <> "/" THEN _
  370.         ZUserIn$ = ZWasY$ : _
  371.         ZWasY$ = ZCarriageReturn$ : _
  372.         WasX$ = ZWasY$ : _
  373.         GOTO 1547
  374.      ZTurboKey = 0
  375.      GOTO 1525
  376. * REPLACING old line(s) by new
  377. 1575 IF LEN(ZUserIn$) > 4000 THEN _
  378. * ------[ first line different ]------
  379.         ZOutTxt$ = "Try Again, " + _
  380.              ZFirstName$ + ".": _                                    ' UG070501
  381.         ZSubParm = 5 : _
  382.         CALL TPut : _
  383.         IF ZSubParm = -1 OR ZFunctionKey <> 0 THEN _
  384.            EXIT SUB _
  385.         ELSE GOTO 1500
  386.      IF ZParseOff THEN _
  387.         ZParseOff = ZFalse : _
  388.         GOTO 1620
  389.      CALL ParseIt
  390.      IF ZWasQ = 1 THEN _
  391.         GOTO 1622
  392.      GOTO 1625
  393. * REPLACING old line(s) by new
  394. 1628 CALL VerifyAns
  395.      IF NOT ZOK THEN _
  396. * ------[ first line different ]------
  397.         CALL QuickTPut2 ("Sorry, Invalid Answer: " + ZUserIn$(1)) : _ ' UG070501
  398.         GOTO 1500
  399.      HoldA$ = ""
  400.      ZForceKeyboard = ZFalse
  401.      IF ZMacroSave > 0 THEN _
  402.         ZGSRAra$(ZMacroSave) = ZUserIn$ : _
  403.         ZMacroSave = 0 : _
  404.         GOTO 1632
  405.      IF (ZDistantTGet > 0) OR (ZMacroTemplate$ <> "") THEN _
  406.         CALL WipeLine (38) : _
  407.         IF NOT ZNo THEN _
  408.            GOTO 1632 _
  409.         ELSE ZWasQ = 0 : _
  410.              ZMacroTemplate$ = "" : _
  411.              ZDistantTGet = 0 : _
  412.              ZNo = ZFalse : _
  413.              GOTO 1633
  414.      IF ZMacroActive THEN _
  415.         ZLastIndex = ZWasQ : _
  416.         FirstIndex = 1: _
  417.         ZMacroActive = NOT EOF(6) : _
  418.         EXIT SUB
  419.      IF ZAnsIndex > 255 OR ((NOT InStack) AND INSTR(ZUserIn$,".") > 0) THEN _
  420.         EXIT SUB
  421.      IF MacroIndex OR ZSubParm < 3 THEN _
  422.         MacroIndex = 1 _
  423.      ELSE MacroIndex = ZAnsIndex
  424.      CALL NoPath (ZUserIn$(MacroIndex),Found)
  425.      IF Found THEN _
  426.         EXIT SUB
  427.      CALL CheckMacro (ZUserIn$(MacroIndex),Found)
  428.      IF Found THEN _
  429.         ZStoreParseAt = ZAnsIndex : _
  430.         GOTO 1525
  431.      EXIT SUB
  432. * REPLACING old line(s) by new
  433. 1635 IF LEN(ZUserIn$) = 0 THEN _
  434.         GOTO 1525
  435.      ZUserIn$ = LEFT$(ZUserIn$,LEN(ZUserIn$)-1)
  436.      CALL LPrnt(ZLocalBksp$,0)
  437.      IF SendRemote THEN _
  438.         CALL PutCom(ZBackSpace$)
  439.      GOTO 1525
  440.      END SUB
  441. * ------[ first line different ]------
  442.  
  443.      SUB UglyTGet STATIC                                             ' UG070501
  444.      CALL TGet                                                       ' UG070501
  445.      CALL SkipLine (1)                                               ' UG070501
  446.      END SUB                                                         ' UG070501
  447.  
  448. * REPLACING old line(s) by new
  449. 1636 ' $SUBTITLE: 'RingCaller - sub to use sound + screen emphasis'
  450. ' $PAGE
  451. '
  452. '  NAME    -- RingCaller
  453. '
  454. '  INPUTS  --     PARAMETER                    MEANING
  455. '                 ZOutTxt$                           STRING TO EMPHASIZE
  456. '
  457. '  OUTPUTS --  none
  458. '
  459. '  PURPOSE --  Rings the users bell before and after string
  460. '              (but not snooping sysop) and adds emphasis around
  461. '              message sent.
  462. '
  463.      SUB RingCaller STATIC
  464.      WasX$ = LEFT$(ZBellRinger$,-ZLocalUser)
  465.      CALL PutCom (ZBellRinger$)
  466.      CALL LPrnt (WasX$,0)
  467. * ------[ first line different ]------
  468.      ZSubParm = 5                                                    ' UG070501
  469.      ZOutTxt$ = ZEmphasizeOn$ + ZOutTxt$ + ZEmphasizeOff$
  470.      CALL TPut
  471.      CALL PutCom (ZBellRinger$)
  472.      CALL LPrnt (WasX$,0)
  473.      END SUB
  474. * REPLACING old line(s) by new
  475. 1640 ZWasB = INSTR(ZWasA,ZUserIn$,ParseChar$)
  476.      ZWasC = ZWasB-ZWasA
  477.      IF ZWasC < 1 THEN _
  478.         ZEOL = ZTrue : _
  479.         ZWasC = 128
  480.      ZWasDF$ = MID$(ZUserIn$,ZWasA,ZWasC)
  481.      IF ZWasDF$ = "" THEN GOTO 1641
  482.         ZWasQ = ZWasQ + 1
  483.         ZStoreParseAt = ZStoreParseAt + 1
  484.         ZUserIn$(ZStoreParseAt) = ZWasDF$
  485.         CALL AllCaps(ZWasDF$)
  486.         WasX = INSTR(";NS;/G;C;",";"+ZWasDF$+";")
  487.         IF WasX = 0 THEN GOTO 1641
  488.            ZNonStop = ZNonStop OR (WasX = 1) OR (WasX = 7 AND NOT ZStackC)
  489.      IF ZStoreParseAt > 1 THEN IF INSTR("Jj",ZUserIn$(ZStoreParseAt-1)) THEN _
  490.         ZNonStop = (ZPageLength < 1)
  491.            ZAutoLogoffReq = ZAutoLogoffReq OR (WasX = 4)
  492. * ------[ first line different ]------
  493.            IF ZAutoLogoffReq THEN CALL SkipLine (1) : CALL QuickTPut1 ("Auto-Logoff Requested.") ' UG070501
  494.            IF ZWasQ > 0 AND WasX < 7 THEN _
  495.               ZWasQ = ZWasQ - 1 : _
  496.               ZStoreParseAt = ZStoreParseAt - 1
  497. * REPLACING old line(s) by new
  498. 1652 IF ZStoreParseAt > ZLastIndex THEN _
  499.         IF ZLastIndex > 0 THEN _
  500.            ZLastIndex = ZStoreParseAt
  501.      ZStackC = ZFalse
  502.      ZParseOff = ZFalse
  503.      END SUB
  504. * ------[ first line different ]------
  505.  
  506.      SUB UglyPopCmdStack STATIC                                      ' UG070501
  507.      PromptDisplayed = (ZAnsIndex >= ZLastIndex)                     ' UG070501
  508.      CALL PopCmdStack                                                ' UG070501
  509.      IF PromptDisplayed AND NOT ZMacroActive THEN _                  ' UG070501
  510.         CALL SkipLine (1)                                            ' UG070501
  511.      END SUB                                                         ' UG070501
  512.  
  513. * REPLACING old line(s) by new
  514. * ------[ first line different ]------
  515. 2021 ZOutTxt$ = "To: A)ll,S)ysop," + _
  516.                  LEFT$("D)istribution,",-14*EnableCC) + _
  517.                  " or Name" + ZPressEnterExpert$                     ' UG070501
  518. '    CALL SkipLine (1)                                               ' UG070501
  519.      ZSemiOnly = ZTrue
  520.      CALL PopCmdStack
  521.      IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
  522.         CALL QuickTPut1 ("30 Chars Max.") : _                        ' UG070501
  523.         GOTO 2021
  524.      Found = ZTrue
  525.      IF ZWasQ = 0 THEN _
  526.         GOTO 2033 _
  527.      ELSE ZWasDF$ = ZUserIn$(ZAnsIndex) : _
  528.           CALL AllCaps (ZWasDF$) : _
  529.           ZUserIn$(ZAnsIndex) = ZWasDF$ : _
  530.           IF ZWasDF$ = "A" THEN _
  531.              MsgTo$ = "ALL" _
  532.           ELSE IF ZWasDF$ = "S" THEN _
  533.              MsgTo$ = "SYSOP" _
  534.           ELSE IF ZWasDF$ = "D" AND EnableCC THEN _
  535.              GOTO 2025 _
  536.           ELSE MsgTo$ = ZUserIn$(ZAnsIndex) :_
  537.                CALL AllCaps (MsgTo$)
  538.      GOTO 2032
  539. * REPLACING old line(s) by new
  540. * ------[ first line different ]------
  541. 2025 ZOutTxt$ = "Use What Distribution List, H)elp"                  ' UG070501
  542.      CALL PopCmdStack
  543.      IF ZWasQ = 0 THEN _
  544.         GOTO 2021
  545.      ZFileName$ = ZUserIn$(ZAnsIndex)
  546.      CALL AllCaps (ZFileName$)
  547.      IF INSTR("?H",ZFileName$) > 0 THEN _
  548.         GOTO 2024
  549.      CALL BadFile (ZFileName$,BadFileNameIndex)
  550.      ON BadFileNameIndex GOTO 2026,2025,2025
  551. * REPLACING old line(s) by new
  552. 2026 ZFileName$ = ZDistriPath$ + ZFileName$ + ".LST"
  553.      CALL FindItX (ZFileName$,7)
  554.      IF NOT ZOK THEN _
  555. * ------[ first line different ]------
  556.         CALL QuickTPUT1 (ZUserIn$ + " Not Found.") : _               ' UG070501
  557.         GOTO 2024
  558.      ZNumHeaders = 0
  559.      CALL OpenWorkA (ZNodeWorkFile$)
  560.      WHILE NOT EOF(7)
  561.         CALL ReadDir (7,1)
  562.         CALL AllCaps (ZOutTxt$)
  563.         ZWasDF$ = ZOutTxt$
  564.         CALL WhoCheck (ZOutTxt$, Found, RcvrRecNum)
  565.         ZNumHeaders = ZNumHeaders + 1
  566.         CALL PrintWorkA (ZWasDF$ + "," + STR$(-RcvrRecNum*Found))
  567.      WEND
  568.      CLOSE 7
  569.      GOTO 2033
  570. * REPLACING old line(s) by new
  571. 2032 RcvrRecNum = 0
  572.      IF MsgTo$ <> "ALL" THEN _
  573.         IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _
  574.            ZWasDF = INSTR(MsgTo$+" @"," @") : _
  575.            TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _
  576.            CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
  577.            IF NOT Found THEN _
  578.               ZLastIndex = 0 : _
  579.               RcvrRecNum = 0 : _
  580.               IF NOT ZReply THEN _
  581. * ------[ first line different ]------
  582.                  ZOutTxt$ = "Send it Anyway (Y,[N])" : _             ' UG070501
  583.                  ZTurboKey = -ZTurboKeyUser : _
  584.                  ZLastIndex = 0 : _
  585.                  GOSUB 2034 : _
  586.                  IF NOT ZYes THEN _
  587.                     GOTO 2021
  588.      IF MsgTo$ = Temp$ THEN _
  589.         ZOutTxt$ = "Really Send This to Yourself (Y,[N])" : _        ' UG070501
  590.         ZLastIndex = 0 : _
  591.         GOSUB 2034 : _
  592.         IF NOT ZYes THEN _
  593.            MsgTo$ = ""
  594.      CALL OpenWorkA (ZNodeWorkFile$)
  595.      CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
  596.      CLOSE 2
  597.      ZNumHeaders = ZNumHeaders + 1
  598.      IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
  599.         MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
  600.         (NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
  601.            ZOutTxt$ = "Send Carbon Copies to Other Users (Y,[N])" : _' UG070501
  602.            CALL PopCmdStack : _
  603.            IF ZYes THEN _
  604.               GOTO 2021
  605. * REPLACING old line(s) by new
  606. * ------[ first line different ]------
  607. 2061 ZOutTxt$ = "Save as:" + ZOutTxt$ + " (E)dit More, H)elp"        ' UG070501
  608.      IF MsgPswd$ = "^READ^" THEN _
  609.         DefaultProt$ = "R" : _
  610.         GOTO 2065
  611.      IF LEFT$(MsgPswd$,1) = "!" THEN _
  612.         DefaultProt$ = "P" _
  613.      ELSE _
  614.         DefaultProt$ = "U"
  615. * REPLACING old line(s) by new
  616. 2075 IF MsgTo$ = "ALL" THEN _
  617. * ------[ first line different ]------
  618.         CALL QuickTPut2 ("Message to ALL Can't Be Private.") : _     ' UG070501
  619.         GOTO 2060
  620.      IF ZWasZ$ = "P" THEN _
  621.         GOTO 2088
  622. * REPLACING old line(s) by new
  623. 2081 CALL QuickTPut1 ("Sending Private Mail.")                       ' UG070501
  624. * REPLACING old line(s) by new
  625. * ------[ first line different ]------
  626. 2085 ZOutTxt$ = "Enter a Message Password"                           ' UG070501
  627.      GOSUB 2096
  628.      IF ZWasQ = 0 THEN _
  629.         IF LEFT$(MsgPswd$,1) = "!" THEN _
  630.            MsgPswd$ = MID$(MsgPswd$,2) : _
  631.            CALL QuickTPut1 ("Password is " + MsgPswd$ + ".") : _     ' UG070501
  632.            RETURN _
  633.         ELSE _
  634.         GOTO 2085
  635.      IF LEN(ZUserIn$) > WasL THEN _
  636.         CALL QuickTPut1 (MID$(STR$(WasL),2) + " Chars Max.") : _     ' UG070501
  637.         GOTO 2085
  638.      IF WasL = 15 AND LEFT$(ZUserIn$,1) = "!" THEN _
  639.         CALL QuickTPut1 ("Password Can't Begin with a '!'.") : _     ' UG070501
  640.         GOTO 2085
  641.      RETURN
  642. '
  643. ' **  PASSWORD PROTECT MESSAGE (USERS WITH PASSWORD AND SYSOP CAN READ) *
  644. '
  645. * REPLACING old line(s) by new
  646. * ------[ first line different ]------
  647. 2088 ZOutTxt$ = "The Recipients Must Know the Password.  Really Use a Password (Y,[N])" ' UG070501
  648.      ZTurboKey = -ZTurboKeyUser
  649.      GOSUB 2096
  650.      IF NOT ZYes THEN _
  651.         GOTO 2070
  652.      WasL = 14
  653.      WasA1$ = "!"
  654.      GOSUB 2085
  655.      CALL AllCaps (ZUserIn$)
  656.      GOTO 2092
  657. '
  658. ' ** MAKE MESSAGE KILL PROTECTED (ONLY SENDER, ADDRESSEE AND SYSOP CAN KILL) *
  659. '
  660. * REPLACING old line(s) by new
  661. 2094 ZSubParm = 1
  662. * ------[ first line different ]------
  663.      CALL UglyTGet                                                   ' UG070501
  664. * REPLACING old line(s) by new
  665. * ------[ first line different ]------
  666. 2096 CALL UglyPopCmdStack                                            ' UG070501
  667.      GOTO 2095
  668.      END SUB
  669. * REPLACING old line(s) by new
  670. 2250 ' $SUBTITLE: 'WhoCheck - Checks whether user exists'
  671. ' $PAGE
  672. '
  673. '  NAME    -- WhoCheck
  674. '
  675. '  INPUTS  --   PARAMETER                    MEANING
  676. '              WhoFind$                User to find
  677. '
  678. '  OUTPUTS --  WhoFound                Whether user found
  679. '              UserNumFound           Record # of user
  680. '
  681. '  PURPOSE --  Validate that user record exists.  Sysop
  682. '              counted as found even if lack user record.
  683. '
  684.      SUB WhoCheck (WhoFind$,WhoFound,UserNumFound) STATIC
  685.      UserNumFound = 0
  686.      IF ZStartHash <> 1 THEN _
  687.         WhoFound = ZTrue : _
  688.         EXIT SUB
  689.      Work128$ = ZUserRecord$
  690.      WhoFound = ZFalse
  691.      ToSysop = (INSTR(WhoFind$,"SYSOP") > 0 OR _
  692.                 INSTR(WhoFind$,ZSysopFirstName$ + " " + ZSysopLastName$) > 0)
  693.      CALL OpenUser (HighestUserRecord)
  694.      FIELD 5, 128 AS ZUserRecord$
  695.      IF ToSysop THEN _
  696.         WasX$ = ZSecretName$ _
  697.      ELSE WasX$ = WhoFind$
  698.      ZWasDF = INSTR(WasX$+"@","@")
  699.      WasX$ = LEFT$(WasX$,ZWasDF)
  700.      IF LEN(WasX$) > 1 THEN _
  701.         CALL FindUser (WasX$,"",ZStartHash,ZLenHash,_
  702.                        0,0,HighestUserRecord,WhoFound,_
  703.                        UserNumFound,ZWasSL)
  704.      LSET ZUserRecord$ = Work128$
  705.      IF NOT WhoFound THEN _
  706.         IF ToSysop THEN _
  707.            WhoFound = ZTrue _
  708. * ------[ first line different ]------
  709.         ELSE CALL QuickTPut1 (WhoFind$ + " Isn't a User On This BBS.") ' UG070501)
  710.      END SUB
  711. * REPLACING old line(s) by new
  712. 2620 ZOutTxt$ = "Line #" + _
  713.           STR$(WasL) + _
  714.           " is:" + _
  715.           ZReturnLineFeed$ + _
  716.           ZOutTxt$(WasL)
  717.      ZSubParm = 3
  718.      CALL TPut
  719.      GOSUB 2695
  720. * ------[ first line different ]------
  721. '    IF NOT ZExpertUser THEN _                                       ' UG070501
  722. '       CALL QuickTPut1 ("Search & replace")                         ' UG070501
  723.      ZOutTxt$ = "Search for What String" + _                         ' UG070501
  724.           ZPressEnterExpert$
  725.      ZMacroMin = 99
  726.      ZParseOff = ZTrue
  727.      ZSubParm = 1
  728.      GOSUB 2694
  729.      IF ZWasQ = 0 THEN _
  730.         CALL SkipLine (1) : _                                        ' UG070501
  731.         EXIT SUB
  732.      ZWasY$ = LEFT$(ZUserIn$,1)
  733.      IF ZWasY$ = RIGHT$(ZUserIn$,1) THEN _
  734.         IF LEN(ZUserIn$) > 2 THEN _
  735.            WasX = INSTR(2,ZUserIn$,ZWasY$) : _
  736.            IF WasX < LEN(ZUserIn$) THEN _
  737.               IF ZWasY$ < "0" OR (ZWasY$ > "9" AND ZWasY$ < "A") THEN _
  738.                  ZUserIn$ = MID$(ZUserIn$,2,LEN(ZUserIn$)-2) : _
  739.                  WasX = WasX - 1 : _
  740.                  GOTO 2622
  741.      WasX = INSTR(ZUserIn$,";")
  742. * REPLACING old line(s) by new
  743. 2622 IF WasX > 0 THEN _
  744.         WasX$ = LEFT$(ZUserIn$,WasX-1) : _
  745.         ZWasY$ = RIGHT$(ZUserIn$,LEN(ZUserIn$)-WasX) : _
  746.         GOTO 2660
  747.      WasX$ = ZUserIn$
  748. * ------[ first line different ]------
  749.      ZOutTxt$ = "And Replace With What"                              ' UG070501
  750.      ZParseOff = ZTrue
  751.      ZSubParm = 1
  752.      ZMacroMin = 99
  753.      GOSUB 2694
  754.      ZWasY$ = ZUserIn$
  755. * REPLACING old line(s) by new
  756. 2660 WasX = INSTR(1,ZOutTxt$(WasL),WasX$)
  757. * ------[ first line different ]------
  758.      CALL SkipLine (1)                                               ' UG070501
  759.      IF WasX = 0 THEN _                                              ' UG070501
  760.         CALL QuickTPut2 ("String Not Found in Line" + STR$(WasL) + ".") : _ ' UG070501
  761.         GOTO 2620
  762. * REPLACING old line(s) by new
  763. 3955 IF WasQX > ActiveMessages THEN _
  764. * ------[ first line different ]------
  765.         ZOutTxt$ = "Message #" + _
  766.              STR$(MsgToKill) + " Not Found." : _                     ' UG070501
  767.         GOTO 4031
  768.      IF ZMsgPtr(WasQX,2) = MsgToKill AND MsgToKill => 1 THEN _
  769.         GOTO 3970
  770.      WasQX = WasQX + 1
  771.      GOTO 3955
  772. * REPLACING old line(s) by new
  773. 3990 IF ZWasZ$ = "^READ^" OR ZWasZ$ = "^KILL^" THEN _
  774.         CALL ChkMsgName (MsgFromCaller,MsgToCaller) : _
  775.         IF (MsgFromCaller OR MsgToCaller) THEN _
  776.            GOTO 4020 _
  777.         ELSE IF NumHeaders > 1 THEN _
  778.                 GOTO 4032 _
  779.              ELSE ZMsgPswd = ZTrue : _
  780.                   ZAttemptsAllowed = 0 : _
  781. * ------[ first line different ]------
  782.                   ZOutTxt$ = "Only the Sender and Receiver Can Kill Message #" + STR$(MsgToKill) + "." : _ ' UG070501
  783.                   GOTO 4031
  784. * REPLACING old line(s) by new
  785. 4020 ZWasZ$ = MID$(ZMsgRec$,37,22)
  786.      CALL Trim (ZWasZ$)
  787.      IF OrigNumHeaders < 2 AND ZExpertUser THEN _
  788.         GOTO 4030
  789. * ------[ first line different ]------
  790.      ZOutTxt$ = "Really Kill Message #" + STR$(MsgToKill) + " to " + ZWasZ$ + " ([Y],N)" ' UG070501
  791.      ZSubParm = 1
  792.      ZTurboKey = -ZTurboKeyUser
  793.      CALL TGet
  794.      IF ZSubParm < 0 THEN _
  795.         EXIT SUB
  796.      IF ZNo THEN _
  797.         GOTO 4032
  798. * REPLACING old line(s) by new
  799. 4030 ZSubParm = 3
  800.      CALL FileLock
  801.      GET 1, MsgRec
  802.      MID$(ZMsgRec$,116,1) = ZDeletedMsg$
  803.      PUT 1, MsgRec
  804.      ZSubParm = 4
  805.      CALL FileLock
  806. * ------[ first line different ]------
  807.      ZOutTxt$ = "Killed Message #" + _
  808.           STR$(MsgToKill) + " to " + ZWasZ$ + "."                    ' UG070501
  809.      CALL UpdtCalr (ZOutTxt$,1)
  810.      IF ((ZUserSecLevel < ZSecKillAny) AND NOT MsgFromCaller) THEN _
  811.         NumHeaders = 0
  812. * REPLACING old line(s) by new
  813. * ------[ first line different ]------
  814. 4656 ZOutTxt$ = "Thread: +)Forward, -)Back, 1)From Start" + ZPressEnterExpert$ ' UG070501
  815.      ZTurboKey = -ZTurboKeyUser
  816.      ZSubParm = 1
  817.      CALL UglyTGet                                                   ' UG070501
  818.      IF ZWasQ = 0 OR ZSubParm = -1 THEN _
  819.         EXIT SUB
  820.      ZWasZ$ = ZUserIn$(1)
  821. * REPLACING old line(s) by new
  822. 4777 ZWasCM = 0
  823.      CALL CheckTime(TimeChatStarted!,Elapsed!, 2)
  824.      ZSecsPerSession! = ZSecsPerSession! + Elapsed!
  825.      IF NOT ZLocalUser THEN _
  826.         ZAutoLogoff! = TIMER + ZWaitBeforeDisconnect
  827. * ------[ first line different ]------
  828.      CALL QuickTPut2 (ZCrLf$ + "Chat Ended.  Returning You to the BBS.") ' UG070501
  829.      END SUB
  830. * REPLACING old line(s) by new
  831. 5501 CALL TimeRemain(MinsRemaining)
  832. * ------[ first line different ]------
  833.      ZOutTxt$ = "You Have" + STR$(MinsRemaining) + _
  834.                 " Minutes Left. D)eposit, W)ithdraw, H)elp, [Q]uit"  ' UG070501
  835.      ZTurboKey = -ZTurboKeyUser                                      ' UG070501
  836.      CALL UglyPopCmdStack                                            ' UG070501
  837.      IF ZSubParm = -1 THEN _
  838.         EXIT SUB
  839.      ZWasZ$ = LEFT$(ZUserIn$(ZAnsIndex),1)
  840.      CALL AllCaps(ZWasZ$)
  841.      ON INSTR("QDW?H",ZWasZ$) GOTO 5509,5505,5502,5508,5508
  842.      GOTO 5501
  843. * REPLACING old line(s) by new
  844. 5503 IF SignTime = 1 THEN _
  845.         ZOutTxt$ = "Withdraw" _
  846.      ELSE ZOutTxt$ = "Deposit"
  847. * ------[ first line different ]------
  848.      Temp$ = ZOutTxt$ + " How Many Minutes"                          ' UG070501
  849.      CALL ChangeInt (ZFalse,Temp$,Temp,0,Maxtime)
  850.      IF ZWasQ = 0 OR ZTestedIntValue = 0 THEN _
  851.         GOTO 5501
  852.      ZTestedIntValue = SignTime * ZTestedIntValue
  853.      CALL ChkAddedTime (ZTestedIntValue)
  854.      IF ZTestedIntValue = 0 THEN _
  855.         GOTO 5501
  856.      ZSecsPerSession! = ZSecsPerSession! + (ZTestedIntValue * 60)
  857.      ZElapsedTime = ZElapsedTime - ZTestedIntValue
  858.      ZGlobalBankTime = ZGlobalBankTime - ZTestedIntValue
  859.      GOSUB 5507
  860.      GOTO 5501
  861. * REPLACING old line(s) by new
  862. 5505 SignTime = -1            ' deposit
  863.      MaxTime = ZMaxBank - ZGlobalBankTime
  864.      IF MaxTime <= 0 THEN _
  865. * ------[ first line different ]------
  866.         CALL QuickTPut2 ("Sorry, You've Already Deposited the Maximum Time of" + STR$(ZMaxBank) + " Minutes.") : _ ' UG070501
  867.         ZLastIndex = 0 : _
  868.         GOTO 5501
  869.      IF MaxTime > MinsRemaining THEN _
  870.         MaxTime = MinsRemaining
  871.      GOTO 5503
  872. * REPLACING old line(s) by new
  873. 5507 IF ZAnsIndex < ZLastIndex THEN _
  874.         RETURN
  875. * ------[ first line different ]------
  876.      ZOutTxt$ = "Current Bank Balance:" + _
  877.                  STR$(ZGlobalBankTime) + " Minutes."                 ' UG070501
  878.      CALL QuickTPut1(ZOutTxt$)
  879.      RETURN
  880. * REPLACING old line(s) by new
  881. 5509 GOSUB 5507
  882. * ------[ first line different ]------
  883.      CALL SkipLine (1)                                               ' UG070501
  884.      END SUB                                                         ' SKO10601
  885. * REPLACING old line(s) by new
  886. 9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
  887. ' $PAGE
  888. '
  889. '  NAME    -- WhosOn
  890. '
  891. '  INPUTS  --     PARAMETER                    MEANING
  892. '                NumNodes                   # of nodes to check
  893. '                ZActiveMessageFile$        Current message file
  894. '                ZOrigMsgFile$              Main msg file
  895. '
  896. '  OUTPUTS --  None
  897. '
  898. '  PURPOSE --  To display who is on each node.
  899. '
  900.      SUB WhosOn (NumNodes) STATIC
  901.      WasA1$ = ZActiveMessageFile$
  902.      ZActiveMessageFile$ = ZOrigMsgFile$
  903.      CALL OpenMsg
  904.      FIELD 1, 128 AS ZMsgRec$
  905.      FOR NodeIndex = 2 TO NumNodes + 1
  906.         GET 1,NodeIndex
  907.         ZOutTxt$ = ZFG1$ + "Node" + _
  908.              STR$(NodeIndex - 1) + ZFG2$
  909.         RecIndex = -VAL(MID$(ZMsgRec$,44,2))
  910.         IF RecIndex >= 0 THEN _
  911.            RecIndex = -1
  912.         WasAX$ = MID$(ZBaudRates$,(-5 * RecIndex ),5) + _
  913.               " BPS: "
  914.         IF MID$(ZMsgRec$,55,2) = "-1" AND NOT ZSysop THEN _
  915. * ------[ first line different ]------
  916.            ZWasY$ = "SysOp" + SPACE$(21) _                           ' UG070501
  917.         ELSE ZWasY$ = MID$(ZMsgRec$,1,26)
  918.         WasAX$ = WasAX$ + ZFG3$ + ZWasY$
  919.         IF MID$(ZMsgRec$,40,2) <> "-1" THEN _
  920.            WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22)
  921.         IF MID$(ZMsgRec$,57,1) = "A" THEN _
  922.            ZOutTxt$ = ZOutTxt$ + "  Online at " + _
  923.                 WasAX$ _
  924.         ELSE IF NOT ZSysop THEN _
  925.                 ZOutTxt$ = ZOutTxt$ + _
  926.                      " Waiting for a Caller" _                       ' UG070501
  927.              ELSE ZOutTxt$ = ZOutTxt$ + _
  928.                        " Offline at " + _
  929.                        WasAX$
  930.         CALL QuickTPut1 (ZOutTxt$)
  931.         CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
  932.         IF ZNo THEN _
  933.            NodeIndex = NumNodes + 2
  934.      NEXT
  935.      ZActiveMessageFile$ = WasA1$
  936.      CALL QuickTPut1 (ZEmphasizeOff$)                                ' UG070501
  937.      END SUB
  938. * REPLACING old line(s) by new
  939. 10420 GET 1,MsgRec
  940.       NumRecsInMsg = VAL(MID$(ZMsgRec$,117,4))
  941.       IF NumRecsInMsg < 1 OR MsgRec => ZNextMsgRec THEN _
  942. * ------[ first line different ]------
  943.          ZWasY$ = "Unknown Message #" + _                            ' UG070501
  944.               STR$(MsgToRecover) : _
  945.          GOTO 10485
  946. * REPLACING old line(s) by new
  947. 10450 IF INSTR(ZMsgRec$,ZDeletedMsg$) <> 0 THEN _
  948.          LSET ZMsgRec$ = LEFT$(ZMsgRec$,115) + _
  949.                                 ZActiveMessage$ + _
  950.                                 MID$(ZMsgRec$,117) : _
  951.          PUT 1,LOC(1) : _
  952. * ------[ first line different ]------
  953.          ZWasY$ = "Message #" + _
  954.               STR$(MsgToRecover) + " Restored.": _                   ' UG070501
  955.          ActionFlag = ZTrue : _
  956.          GOTO 10485
  957. * REPLACING old line(s) by new
  958. * ------[ first line different ]------
  959. 10480 ZWasY$ = "Sorry, Message #" + _
  960.            STR$(MsgToRecover) + _
  961.            " Isn't Dead."                                            ' UG070501
  962. * REPLACING old line(s) by new
  963. * ------[ first line different ]------
  964. 10485 CALL QuickTPut2 (ZWasY$)                                       ' UG070501
  965.       END SUB
  966. * REPLACING old line(s) by new
  967. 10607 IF ZExitToDoors OR NOT LoggingOff THEN _
  968.          EXIT SUB
  969.       Temp = ZMinsPerSession
  970.       IF ZMaxPerDay > 0 THEN _
  971.          Temp = ZMaxPerDay - TempElapsed! : _
  972.          IF Temp > ZMinsPerSession THEN _
  973.             Temp = ZMinsPerSession
  974.       Temp = -(Temp > 0) * Temp
  975. * ------[ first line different ]------
  976.       CALL QuickTPut1 ("You Have" + STR$(Temp)+" Minutes Left for Today.") ' UG070501
  977.       ZOutTxt$ = ZFirstName$                                         ' UG070501
  978.       CALL NameCaps(ZOutTxt$)                                        ' UG070501
  979.       CALL QuickTPut1 (ZOutTxt$ + ", Thanks for Calling.  Please Call Again!") ' UG070501
  980.       IF NOT ZHiLiteOff THEN _
  981.          CALL QuickTPut1 (ZColorReset$)
  982.       CALL DelayTime (8 + ZBPS)
  983.       END SUB
  984. * REPLACING old line(s) by new
  985. 10950 CALL AMorPM
  986.       CALL UpdtCalr ("Exited to DOS at " + ZTime$,2)
  987. * ------[ first line different ]------
  988.       CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Remote DOS Jump.  Type EXIT to Return." ) ' UG070501
  989. '     CALL QuickTPut1 ("SysOp in Remote Console mode")               ' UG070501
  990.       CALL RBBSExit (ZOutTxt$(),ZFF)
  991.       END SUB
  992. * REPLACING old line(s) by new
  993. 10985 CALL ReadParms (ZOutTxt$(),8,1)
  994.       IF ZErrCode > 0 THEN _
  995.          IF ReqDoorsDef THEN _
  996.             EXIT SUB _
  997.          ELSE ExitTo$ = ExitTo$ + " " + ZNodeID$ : _
  998.               GOTO 10989
  999.       IF ExitTo$ <> ZOutTxt$(1) THEN _
  1000.          GOTO 10985
  1001.       CALL CheckInt (ZOutTxt$(2))
  1002.       IF ZErrCode > 0 THEN _
  1003.          ZErrCode = 0 : _
  1004.          GOTO 10985
  1005.       IF ZUserSecLevel < ZTestedIntValue THEN _
  1006. * ------[ first line different ]------
  1007.          CALL QuickTPut2 ("Sorry, You Need a Higher Security Level for this Door.") : _ ' UG070501
  1008.          EXIT SUB
  1009.       WasX$ = LEFT$(ZOutTxt$(5),INSTR(ZOutTxt$(5)+" "," ")-1)
  1010.       CALL FindIt (WasX$)
  1011.       IF NOT ZOK THEN _
  1012.          GOTO 10986
  1013.       ZFileName$ = ZOutTxt$(3)
  1014.       ExitMethod$ = ZOutTxt$(4)
  1015.       ExitTemplate$ = ZOutTxt$(5)
  1016.       ZDoorDisplay$ = ZOutTxt$(7)
  1017.       ZDoorTime$ = ZOutTxt$(8)
  1018.       CALL AskUsers
  1019.       CALL SmartText (ExitTemplate$,ZFalse,ZFalse)
  1020.       CALL MetaGSR (ExitTemplate$,ZFalse)
  1021.       ExitTo$ = ExitTemplate$
  1022.       GOTO 10989
  1023. * REPLACING old line(s) by new
  1024. 10989 IF ZTransferFunction = 3 THEN _
  1025.          ZWasY$ = "Registration" _
  1026.       ELSE ZWasY$ = ZDooredTo$
  1027. * ------[ first line different ]------
  1028. '     ZOutTxt$ = ZWasY$ + _                                          ' UG070501
  1029. '          " door opened at " + _                                    ' UG070501
  1030. '          TIME$ + _                                                 ' UG070501
  1031. '          " on " + _                                                ' UG070501
  1032. '          DATE$                                                     ' UG070501
  1033. '     ZSubParm = 5                                                   ' UG070501
  1034. '     CALL TPut                                                      ' UG070501
  1035.       CALL QuickTPut1 ("Loading " + ZWasY$ + " Door.  Please Wait...") ' UG070501
  1036.       CALL UpdtCalr (ZDooredTo$ + " door opened!",2)
  1037.       CALL DoorInfo
  1038.       IF ExitMethod$ = "S" THEN _
  1039.          CALL UpdateU (ZFalse) : _
  1040.          CLOSE 4,5 : _
  1041.          CALL ShellExit (ExitTemplate$) : _
  1042.          ZPrevCaller$ = "" : _
  1043.          CALL SetCall : _
  1044.          ZExitToDoors = ZTrue : _
  1045.          CALL DoorReturn : _
  1046.          CALL BufFile (ZDoorDisplay$,WasX) : _
  1047.          ZExitToDoors = ZFalse _
  1048.       ELSE ZOutTxt$(1) = ZDiskForDos$ + _
  1049.                   "COMMAND /C " + _
  1050.                   ExitTo$ : _
  1051.            ZOutTxt$(2) = ZRBBSBat$ : _
  1052.            CALL RBBSExit (ZOutTxt$(),2)
  1053.       END SUB
  1054. * REPLACING old line(s) by new
  1055. 10991 ' $SUBTITLE: 'DoorInfo -- Write info for doors to file'
  1056.       SUB DoorInfo STATIC
  1057.       CLOSE 2
  1058.       OPEN "O",2,"DORINFO" + _
  1059.                  ZNodeFileID$ + _
  1060.                  ".DEF"
  1061.       PRINT #2,ZRBBSName$
  1062.       PRINT #2,ZSysopFirstName$
  1063.       PRINT #2,ZSysopLastName$
  1064.       IF ZLocalUser THEN _
  1065.          PRINT #2,"COM0" _
  1066.       ELSE PRINT #2,ZComPort$
  1067. * ------[ first line different ]------
  1068.       ZUserIn$ = MID$(ZBaudParity$, INSTR(ZBaudParity$, " BPS")+4)   ' UG070511
  1069.       PRINT #2,ZTalkToModemAt$;" BAUD";ZUserIn$
  1070.       PRINT #2,ZNetworkType
  1071.       IF ZGlobalSysop THEN _
  1072.          PRINT #2,"SYSOP" : _
  1073.          PRINT #2,"" _
  1074.       ELSE PRINT #2,ZFirstName$ : _
  1075.            PRINT #2,ZLastName$
  1076.       PRINT #2,ZCityState$
  1077.       PRINT #2,ZWasGR
  1078.       PRINT #2,ZUserSecLevel
  1079.       CALL TimeRemain (MinsRemaining)
  1080.       CALL CheckInt (ZDoorTime$)
  1081.       IF ZErrCode = 0 AND ZTestedIntValue > 0 THEN _
  1082.          IF MinsRemaining > ZTestedIntValue THEN _
  1083.             MinsRemaining = ZTestedIntValue
  1084.       PRINT #2,INT(MinsRemaining)
  1085.       PRINT #2,ZFossil
  1086.       CLOSE 2
  1087.       END SUB
  1088. * REPLACING old line(s) by new
  1089. 12025 ZActiveMenu$ = LEFT$(ZSection$,1)
  1090.       LSET ZLastCommand$ = ZActiveMenu$ + " "
  1091.       IF ZShowSection THEN _
  1092.          ZSectionPrompt$ = ZSection$ _
  1093.       ELSE ZSectionPrompt$ = "Your"
  1094.       IF ZCmndsInPrompt=0 THEN _
  1095.           ZSectionOpts$ = ""
  1096.       ZCmdPrompt$ = ZSectionPrompt$ + _
  1097. * ------[ first line different ]------
  1098.                         " Command" + _                               ' UG070501
  1099.                         ZSectionOpts$
  1100.       END SUB
  1101. * REPLACING old line(s) by new
  1102. 12880 ZParseOff = ZTrue
  1103.       ZOutTxt$ = Ques$
  1104. * ------[ first line different ]------
  1105.       CALL UglyPopCmdStack                                           ' UG070501
  1106.       IF ZSubParm = -1 THEN _
  1107.          GOTO 12882
  1108.       IF ZWasQ = 0 THEN _
  1109.          GOTO 12880
  1110.       IF LEN(ZUserIn$(ZAnsIndex)) > MaxLen THEN _
  1111.          ZLastIndex = 0 : _
  1112.          CALL QuickTPut1 (MID$(STR$(MaxLen),2) + " Chars Max.") : _  ' UG070501
  1113.          GOTO 12880_
  1114.       ELSE IF LEN(ZUserIn$(ZAnsIndex)) < MinLen THEN _
  1115.               ZLastIndex = 0 : _
  1116.               CALL QuickTPut1 (MID$(STR$(MinLen),2) + " Chars Min.") ' UG070501: _
  1117.               GOTO 12880
  1118.       Ans$ = ZUserIn$(ZAnsIndex)
  1119.       IF ZAnsIndex < ZLastIndex THEN _
  1120.          GOTO 12881
  1121.       ZOutTxt$ = "You Entered " + ZUserIn$(ZAnsIndex) + _
  1122.            ", Right ([Y],N)"                                         ' UG070501
  1123.       ZTurboKey = -ZTurboKeyUser
  1124.       ZSubParm = 1
  1125.       CALL UglyTGet                                                  ' UG070501
  1126.       IF ZSubParm = -1 THEN _
  1127.          GOTO 12882
  1128.       IF ZNo THEN _
  1129.          GOTO 12880
  1130. * REPLACING old line(s) by new
  1131. 20096 ' $SUBTITLE: 'CheckRatio - subroutine to print ul/dl ratio'
  1132. ' $PAGE
  1133. '
  1134. '  NAME    -- CheckRatio
  1135. '
  1136. '  INPUTS  --   PARAMETER                    MEANING
  1137. '               TellUser           TELL USER THEIR RATIO
  1138. '               ZDnlds             FILES DOWNLOADED
  1139. '               ZDLBytes!          BYTES DOWNLOADED
  1140. '               ZUplds             FILES UPLOADED
  1141. '               ZULBytes!          BYTES UPLOADED
  1142. '
  1143. '  OUTPUTS --   ZOK                 -1 if okay to download, 0 otherwise
  1144. '
  1145. '  PURPOSE -- To determine whether the users violated
  1146. '             their upload to download restriction
  1147. '
  1148.       SUB CheckRatio (TellUser) STATIC
  1149.       ZOK = ZTrue
  1150.       IF ZRatioRestrict# <= 0 OR (NOT ZEnforceRatios) OR ZFreeDnld THEN _
  1151.          GOTO 20110
  1152. '
  1153. ' Detemine method of ratio checking.  Look ahead to amount downloaded
  1154. '
  1155.       IF ZByteMethod = 1 OR ZByteMethod = 3 THEN _
  1156.          Method$ = "Bytes" : _
  1157.          ULWork# = ZULBytes! : _
  1158.          DLWork# = ZDLBytes! + ZNumDnldBytes!
  1159.       IF ZByteMethod = 0 OR ZByteMethod = 2 THEN _
  1160.          Method$ = "Files" : _
  1161.          ULWork# = ZUplds : _
  1162.          DLWork# = ZDnlds + ZDownFiles
  1163.       IF ULWork# < ZInitialCredit# THEN _
  1164.          ULWork# = ZInitialCredit#
  1165.       IF ZByteMethod = 2 THEN _
  1166.          Today# = ZRatioRestrict# - ZDLToday! - ZDownFiles
  1167.       IF ZByteMethod = 3 THEN _
  1168.          Today# = ZRatioRestrict# - ZBytesToday! - ZNumDnldBytes!
  1169. '
  1170.       Ratio# = 0
  1171.       RatioSuffix$ = ":0"
  1172.       IF ULWork# > 0 THEN _
  1173.          Ratio# = (DLWork# / ULWork#) : _
  1174.          RatioSuffix$ = ":1"
  1175.       IF ZByteMethod > 1 THEN _
  1176. * ------[ first line different ]------
  1177.          ZOutTxt$ = "Today: Files Downloaded:" + STR$(ZDLToday! + ZDownFiles) + _
  1178.               " " + STR$(ZBytesToday! + ZNumDnldBytes!) + " Bytes.": _ ' UG070501
  1179.          ZSubParm = 5 : _
  1180.          CALL TPut : _                                               ' UG070501
  1181.          GOTO 20100
  1182.       WasX$ = STR$(Ratio#)
  1183.       X = INSTR(WasX$,".")
  1184.       IF X > 0 THEN _
  1185.          WasX$ = LEFT$(WasX$,X+1)
  1186.       ZOutTxt$ = "Total " + Method$ + " Downloaded:" + STR$(DLWork#) + _
  1187.               "  Uploaded:" + _
  1188.               STR$(ULWork#) + _
  1189.               "  Ratio:" + _                                         ' UG070501
  1190.               WasX$ + _
  1191.               RatioSuffix$
  1192.       ZSubParm = 5
  1193.       CALL TPut
  1194. '
  1195. '  CHECK TO SEE IF THE USER HAS VIOLATED THEIR UL/DL RESTRICTION
  1196. '
  1197. * REPLACING old line(s) by new
  1198. 20100 IF NOT (ZRatioRestrict# > 0 AND TellUser) THEN _
  1199.          EXIT SUB
  1200.       IF ZByteMethod <= 1 THEN _
  1201.          GOTO 20105
  1202.       IF Today# < 0 THEN _
  1203. * ------[ first line different ]------
  1204.          ZOutTxt$ = "Sorry, Daily Download Limit of" + _
  1205.               STR$(ZRatioRestrict#) + " " + _
  1206.               Method$ + " Reached." : _                              ' UG070501
  1207.          ZOK = ZFalse _
  1208.       ELSE ZOutTxt$ = "Download Balance:" + _                        ' UG070501
  1209.                 STR$(Today#) + _
  1210.                 " " + _
  1211.                 Method$ : _
  1212.            ZOK = ZTrue
  1213.       ZSubParm = 1                                                   ' UG070501
  1214.       CALL TPut
  1215. '     CALL SkipLine(1)                                               ' UG070501
  1216.       EXIT SUB
  1217. '
  1218. * REPLACING old line(s) by new
  1219. 20105 IF Ratio# > ZRatioRestrict# OR ULWork# = 0 THEN _
  1220.          ZOK = ZFalse : _
  1221. * ------[ first line different ]------
  1222.          ZOutTxt$ = "Sorry, DL/UL Ratio of" + _                      ' UG070501
  1223.               STR$(ZRatioRestrict#) + _
  1224.               ":1 " + _
  1225.               Method$ + " Exceeded." : _                             ' UG070501
  1226.          ZSubParm = 1 : _                                            ' UG070501
  1227.          CALL TPut : _
  1228.          ZOutTxt$ = "Minimum Upload of" + _                          ' UG070501
  1229.               STR$(INT(((DLWork# - (ULWork# * ZRatioRestrict#)) _
  1230.               / ZRatioRestrict#) + 1)) + _
  1231.               + " " + Method$ + " is Required to Download." _        ' UG070501
  1232.       ELSE ZOutTxt$ = "Balance Remaining Before Upload Required:" + _ ' UG070501
  1233.                 STR$(INT((ULWork# * ZRatioRestrict#)-DLWork#)) + _
  1234.                 " " + Method$
  1235.       ZSubParm = 5
  1236.       CALL TPut
  1237. '     CALL SkipLine (1)                                              ' UG070501
  1238. * REPLACING old line(s) by new
  1239. 20141 IF ZAnsIndex >= ZLastIndex THEN _
  1240.          IF LEN(ZDefaultExtension$) > 0 THEN _
  1241. * ------[ first line different ]------
  1242.             CALL QuickTPut1 ("Default Extension is ."+ZDefaultExtension$) ' UG070501
  1243.       WasZ$ = "V"
  1244.       CALL AskItems ("V",WasZ$,ZFalse,"Compressed File",ZMarkedFiles$) ' UG070501
  1245.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  1246.          EXIT SUB
  1247.       ZViolation$ = "View ARC"
  1248.       WasX = ZAnsIndex
  1249.       ZAnsIndex = WasX
  1250. * REPLACING old line(s) by new
  1251. * ------[ first line different ]------
  1252. 20143 CALL AllCaps (ZUserIn$(ZAnsIndex))                             ' UG070501
  1253.       ZWasZ$ = ZUserIn$(ZAnsIndex)                                   ' UG070501
  1254.       CALL UnMarkItems (ZMarkedFiles$,ZAnsIndex, ZLastIndex,Temp,ZFalse)
  1255.       ZWasZ$ = ZUserIn$(ZAnsIndex)
  1256.       WasZ$ = ZWasZ$
  1257.       CALL AllCaps (ZWasZ$)
  1258.       CALL BreakFileName (ZWasZ$,Drive$,Prefix$,Ext$,ZFalse)
  1259.       IF Ext$ = "" THEN _
  1260.          Ext$ = ZDefaultExtension$ : _
  1261.          ZWasZ$ = ZWasZ$ + "." + ZDefaultExtension$
  1262.       ZFileNameHold$ = ZWasZ$
  1263.       ZFileName$ = ZWasZ$
  1264.       CALL BadFile (Prefix$,BadFileNameIndex)
  1265.       ON BadFileNameIndex GOTO 20144,20146,20147
  1266. * REPLACING old line(s) by new
  1267. 20146 ZWasZ$ = WasZ$ + _
  1268. * ------[ first line different ]------
  1269.            " Not Found."                                             ' UG070501
  1270.       CALL UpdtCalr (ZWasZ$,2)
  1271.       ZOutTxt$ = ZWasZ$ + _
  1272.            "  Enter the Correct Filename" + ZPressEnterExpert$       ' UG070501
  1273.       ZSubParm = 1                                                   ' UG070501
  1274.       CALL UglyTGet                                                  ' UG070501
  1275.       IF ZSubParm = -1 OR ZWasQ = 0 THEN _
  1276.          RETURN
  1277.       ZUserIn$(ZAnsIndex) = ZUserIn$(1)
  1278.       GOTO 20143
  1279. * REPLACING old line(s) by new
  1280. 20150 WasX = INSTR(".ARC.PAK.ZIP.LZH.","."+Ext$+".")
  1281.       'IF (WasX < 1) OR (WasX = 1 AND NOT ZTurboRBBS) THEN _
  1282.       IF (WasX < 1) THEN _
  1283. * ------[ first line different ]------
  1284.          CALL QuickTPut2 ("Sorry, View for ."+Ext$+"s is Unavailable.") : _ ' UG070501
  1285.          RETURN                                                      ' UG070501
  1286. '     CALL QuickTPut1 (ZFileNameHold$ + " has these files")          ' UG070501
  1287.       CALL ViewArc
  1288.       RETURN
  1289.       END SUB
  1290.